home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / perl / 5.10.0 / CORE / intrpvar.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-06-26  |  21.2 KB  |  684 lines

  1. /*   intrpvar.h 
  2.  *
  3.  *    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
  4.  *    2006, 2007
  5.  *    by Larry Wall and others
  6.  *
  7.  *    You may distribute under the terms of either the GNU General Public
  8.  *    License or the Artistic License, as specified in the README file.
  9.  *
  10.  */
  11.  
  12. /*
  13. =head1 Per-Interpreter Variables
  14. */
  15.  
  16. /* These variables are per-interpreter in threaded/multiplicity builds,
  17.  * global otherwise.
  18.  
  19.  * Don't forget to re-run embed.pl to propagate changes! */
  20.  
  21. /* New variables must be added to the very end for binary compatibility.
  22.  * XSUB.h provides wrapper functions via perlapi.h that make this
  23.  * irrelevant, but not all code may be expected to #include XSUB.h. */
  24.  
  25. /* Don't forget to add your variable also to perl_clone()! */
  26.  
  27. /* The 'I' prefix is only needed for vars that need appropriate #defines
  28.  * generated when built with or without MULTIPLICITY.  It is also used
  29.  * to generate the appropriate export list for win32.
  30.  *
  31.  * When building without MULTIPLICITY, these variables will be truly global.
  32.  *
  33.  * Important ones in the first cache line (if alignment is done right) */
  34.  
  35. PERLVAR(Istack_sp,    SV **)        /* top of the stack */
  36. #ifdef OP_IN_REGISTER
  37. PERLVAR(Iopsave,    OP *)
  38. #else
  39. PERLVAR(Iop,        OP *)        /* currently executing op */
  40. #endif
  41. PERLVAR(Icurpad,    SV **)        /* active pad (lexicals+tmps) */
  42.  
  43. PERLVAR(Istack_base,    SV **)
  44. PERLVAR(Istack_max,    SV **)
  45.  
  46. PERLVAR(Iscopestack,    I32 *)        /* scopes we've ENTERed */
  47. PERLVAR(Iscopestack_ix,    I32)
  48. PERLVAR(Iscopestack_max,I32)
  49.  
  50. PERLVAR(Isavestack,    ANY *)        /* items that need to be restored when
  51.                        LEAVEing scopes we've ENTERed */
  52. PERLVAR(Isavestack_ix,    I32)
  53. PERLVAR(Isavestack_max,    I32)
  54.  
  55. PERLVAR(Itmps_stack,    SV **)        /* mortals we've made */
  56. PERLVARI(Itmps_ix,    I32,    -1)
  57. PERLVARI(Itmps_floor,    I32,    -1)
  58. PERLVAR(Itmps_max,    I32)
  59. PERLVAR(Imodcount,    I32)        /* how much mod()ification in
  60.                        assignment? */
  61.  
  62. PERLVAR(Imarkstack,    I32 *)        /* stack_sp locations we're
  63.                        remembering */
  64. PERLVAR(Imarkstack_ptr,    I32 *)
  65. PERLVAR(Imarkstack_max,    I32 *)
  66.  
  67. PERLVAR(ISv,        SV *)        /* used to hold temporary values */
  68. PERLVAR(IXpv,        XPV *)        /* used to hold temporary values */
  69.  
  70. /*
  71. =for apidoc Amn|STRLEN|PL_na
  72.  
  73. A convenience variable which is typically used with C<SvPV> when one
  74. doesn't care about the length of the string.  It is usually more efficient
  75. to either declare a local variable and use that instead or to use the
  76. C<SvPV_nolen> macro.
  77.  
  78. =cut
  79. */
  80.  
  81. PERLVAR(Ina,        STRLEN)        /* for use in SvPV when length is
  82.                        Not Applicable */
  83.  
  84. /* stat stuff */
  85. PERLVAR(Istatbuf,    Stat_t)
  86. PERLVAR(Istatcache,    Stat_t)        /* _ */
  87. PERLVAR(Istatgv,    GV *)
  88. PERLVARI(Istatname,    SV *,    NULL)
  89.  
  90. #ifdef HAS_TIMES
  91. PERLVAR(Itimesbuf,    struct tms)
  92. #endif
  93.  
  94. /* Fields used by magic variables such as $@, $/ and so on */
  95. PERLVAR(Icurpm,        PMOP *)        /* what to do \ interps in REs from */
  96.  
  97. /*
  98. =for apidoc mn|SV*|PL_rs
  99.  
  100. The input record separator - C<$/> in Perl space.
  101.  
  102. =for apidoc mn|GV*|PL_last_in_gv
  103.  
  104. The GV which was last used for a filehandle input operation. (C<< <FH> >>)
  105.  
  106. =for apidoc mn|SV*|PL_ofs_sv
  107.  
  108. The output field separator - C<$,> in Perl space.
  109.  
  110. =cut
  111. */
  112.  
  113. PERLVAR(Irs,        SV *)        /* input record separator $/ */
  114. PERLVAR(Ilast_in_gv,    GV *)        /* GV used in last <FH> */
  115. PERLVAR(Iofs_sv,    SV *)        /* output field separator $, */
  116. PERLVAR(Idefoutgv,    GV *)        /* default FH for output */
  117. PERLVARI(Ichopset,    const char *, " \n-")    /* $: */
  118. PERLVAR(Iformtarget,    SV *)
  119. PERLVAR(Ibodytarget,    SV *)
  120. PERLVAR(Itoptarget,    SV *)
  121.  
  122. /* Stashes */
  123. PERLVAR(Idefstash,    HV *)        /* main symbol table */
  124. PERLVAR(Icurstash,    HV *)        /* symbol table for current package */
  125.  
  126. PERLVAR(Irestartop,    OP *)        /* propagating an error from croak? */
  127. PERLVAR(Icurcop,    COP * VOL)
  128. PERLVAR(Icurstack,    AV *)        /* THE STACK */
  129. PERLVAR(Icurstackinfo,    PERL_SI *)    /* current stack + context */
  130. PERLVAR(Imainstack,    AV *)        /* the stack when nothing funny is
  131.                        happening */
  132.  
  133. PERLVAR(Itop_env,    JMPENV *)    /* ptr to current sigjmp environment */
  134. PERLVAR(Istart_env,    JMPENV)        /* empty startup sigjmp environment */
  135. PERLVARI(Ierrors,    SV *,    NULL)    /* outstanding queued errors */
  136.  
  137. /* statics "owned" by various functions */
  138. PERLVAR(Ihv_fetch_ent_mh, HE*)        /* owned by hv_fetch_ent() */
  139.  
  140. PERLVAR(Ilastgotoprobe,    OP*)        /* from pp_ctl.c */
  141.  
  142. /* sort stuff */
  143. PERLVAR(Isortcop,    OP *)        /* user defined sort routine */
  144. PERLVAR(Isortstash,    HV *)        /* which is in some package or other */
  145. PERLVAR(Ifirstgv,    GV *)        /* $a */
  146. PERLVAR(Isecondgv,    GV *)        /* $b */
  147.  
  148. /* float buffer */
  149. PERLVAR(Iefloatbuf,    char *)
  150. PERLVAR(Iefloatsize,    STRLEN)
  151.  
  152. /* regex stuff */
  153.  
  154. PERLVAR(Iscreamfirst,    I32 *)
  155. PERLVAR(Iscreamnext,    I32 *)
  156. PERLVAR(Ilastscream,    SV *)
  157.  
  158. PERLVAR(Ireg_state,    struct re_save_state)
  159.  
  160. PERLVAR(Iregdummy,    regnode)    /* from regcomp.c */
  161.  
  162. PERLVARI(Idumpindent,    U16,    4)    /* number of blanks per dump
  163.                        indentation level */
  164.  
  165.  
  166. PERLVAR(Iutf8locale,    bool)        /* utf8 locale detected */
  167. PERLVARI(Irehash_seed_set, bool, FALSE)    /* 582 hash initialized? */
  168.  
  169. PERLVARA(Icolors,6,    char *)        /* from regcomp.c */
  170.  
  171. PERLVARI(Ipeepp,    peep_t, MEMBER_TO_FPTR(Perl_peep))
  172.                     /* Pointer to peephole optimizer */
  173.  
  174. PERLVARI(Imaxscream,    I32,    -1)
  175. PERLVARI(Ireginterp_cnt,I32,     0)    /* Whether "Regexp" was interpolated. */
  176. PERLVARI(Iwatchaddr,    char **, 0)
  177. PERLVAR(Iwatchok,    char *)
  178.  
  179. /* the currently active slab in a chain of slabs of regmatch states,
  180.  * and the currently active state within that slab */
  181.  
  182. PERLVARI(Iregmatch_slab, regmatch_slab *,    NULL)
  183. PERLVAR(Iregmatch_state, regmatch_state *)
  184.  
  185. /* Put anything new that is pointer aligned here. */
  186.  
  187. PERLVAR(Idelaymagic,    U16)        /* ($<,$>) = ... */
  188. PERLVAR(Ilocalizing,    U8)        /* are we processing a local() list? */
  189. PERLVAR(Icolorset,    bool)        /* from regcomp.c */
  190. PERLVARI(Idirty,    bool, FALSE)    /* in the middle of tearing things
  191.                        down? */
  192. PERLVAR(Iin_eval,    VOL U8)        /* trap "fatal" errors? */
  193. PERLVAR(Itainted,    bool)        /* using variables controlled by $< */
  194.  
  195. /* This value may be set when embedding for full cleanup  */
  196. /* 0=none, 1=full, 2=full with checks */
  197. /* mod_perl is special, and also assigns a meaning -1 */
  198. PERLVARI(Iperl_destruct_level,    signed char,    0)
  199.  
  200. PERLVAR(Iperldb,    U32)
  201.  
  202. /* pseudo environmental stuff */
  203. PERLVAR(Iorigargc,    int)
  204. PERLVAR(Iorigargv,    char **)
  205. PERLVAR(Ienvgv,        GV *)
  206. PERLVAR(Iincgv,        GV *)
  207. PERLVAR(Ihintgv,    GV *)
  208. PERLVAR(Iorigfilename,    char *)
  209. PERLVAR(Idiehook,    SV *)
  210. PERLVAR(Iwarnhook,    SV *)
  211.  
  212. /* switches */
  213. PERLVAR(Ipatchlevel,    SV *)
  214. PERLVAR(Ilocalpatches,    const char * const *)
  215. PERLVARI(Isplitstr,    const char *, " ")
  216.  
  217. PERLVAR(Iminus_c,    bool)
  218. PERLVAR(Ipreprocess,    bool)
  219. PERLVAR(Iminus_n,    bool)
  220. PERLVAR(Iminus_p,    bool)
  221. PERLVAR(Iminus_l,    bool)
  222. PERLVAR(Iminus_a,    bool)
  223. PERLVAR(Iminus_F,    bool)
  224. PERLVAR(Idoswitches,    bool)
  225.  
  226. PERLVAR(Iminus_E,    bool)
  227.  
  228. /*
  229.  
  230. =for apidoc mn|bool|PL_dowarn
  231.  
  232. The C variable which corresponds to Perl's $^W warning variable.
  233.  
  234. =cut
  235. */
  236.  
  237. PERLVAR(Idowarn,    U8)
  238. PERLVAR(Idoextract,    bool)
  239. PERLVAR(Isawampersand,    bool)        /* must save all match strings */
  240. PERLVAR(Iunsafe,    bool)
  241. PERLVAR(Iexit_flags,    U8)        /* was exit() unexpected, etc. */
  242. PERLVAR(Isrand_called,    bool)
  243. /* Part of internal state, but makes the 16th 1 byte variable in a row.  */
  244. PERLVAR(Itainting,    bool)        /* doing taint checks */
  245. PERLVAR(Iinplace,    char *)
  246. PERLVAR(Ie_script,    SV *)
  247.  
  248. /* magical thingies */
  249. PERLVAR(Ibasetime,    Time_t)        /* $^T */
  250. PERLVAR(Iformfeed,    SV *)        /* $^L */
  251.  
  252.  
  253. PERLVARI(Imaxsysfd,    I32,    MAXSYSFD)
  254.                     /* top fd to pass to subprocesses */
  255. PERLVAR(Istatusvalue,    I32)        /* $? */
  256. #ifdef VMS
  257. PERLVAR(Istatusvalue_vms,U32)
  258. #else
  259. PERLVAR(Istatusvalue_posix,I32)
  260. #endif
  261.  
  262. PERLVARI(Isig_pending, int,0)           /* Number if highest signal pending */
  263. PERLVAR(Ipsig_pend, int *)        /* per-signal "count" of pending */
  264.  
  265. /* shortcuts to various I/O objects */
  266. PERLVAR(Istdingv,    GV *)
  267. PERLVAR(Istderrgv,    GV *)
  268. PERLVAR(Idefgv,        GV *)
  269. PERLVAR(Iargvgv,    GV *)
  270. PERLVAR(Iargvoutgv,    GV *)
  271. PERLVAR(Iargvout_stack,    AV *)
  272.  
  273. /* shortcuts to regexp stuff */
  274. PERLVAR(Ireplgv,    GV *)
  275.  
  276. /* shortcuts to misc objects */
  277. PERLVAR(Ierrgv,        GV *)
  278.  
  279. /* shortcuts to debugging objects */
  280. PERLVAR(IDBgv,        GV *)
  281. PERLVAR(IDBline,    GV *)
  282.  
  283. /*
  284. =for apidoc mn|GV *|PL_DBsub
  285. When Perl is run in debugging mode, with the B<-d> switch, this GV contains
  286. the SV which holds the name of the sub being debugged.  This is the C
  287. variable which corresponds to Perl's $DB::sub variable.  See
  288. C<PL_DBsingle>.
  289.  
  290. =for apidoc mn|SV *|PL_DBsingle
  291. When Perl is run in debugging mode, with the B<-d> switch, this SV is a
  292. boolean which indicates whether subs are being single-stepped.
  293. Single-stepping is automatically turned on after every step.  This is the C
  294. variable which corresponds to Perl's $DB::single variable.  See
  295. C<PL_DBsub>.
  296.  
  297. =for apidoc mn|SV *|PL_DBtrace
  298. Trace variable used when Perl is run in debugging mode, with the B<-d>
  299. switch.  This is the C variable which corresponds to Perl's $DB::trace
  300. variable.  See C<PL_DBsingle>.
  301.  
  302. =cut
  303. */
  304.  
  305. PERLVAR(IDBsub,        GV *)
  306. PERLVAR(IDBsingle,    SV *)
  307. PERLVAR(IDBtrace,    SV *)
  308. PERLVAR(IDBsignal,    SV *)
  309. PERLVAR(Idbargs,    AV *)        /* args to call listed by caller function */
  310.  
  311. /* symbol tables */
  312. PERLVAR(Idebstash,    HV *)        /* symbol table for perldb package */
  313. PERLVAR(Iglobalstash,    HV *)        /* global keyword overrides imported here */
  314. PERLVAR(Icurstname,    SV *)        /* name of current package */
  315. PERLVAR(Ibeginav,    AV *)        /* names of BEGIN subroutines */
  316. PERLVAR(Iendav,        AV *)        /* names of END subroutines */
  317. PERLVAR(Iunitcheckav,    AV *)        /* names of UNITCHECK subroutines */
  318. PERLVAR(Icheckav,    AV *)        /* names of CHECK subroutines */
  319. PERLVAR(Iinitav,    AV *)        /* names of INIT subroutines */
  320. PERLVAR(Istrtab,    HV *)        /* shared string table */
  321. PERLVARI(Isub_generation,U32,1)        /* incr to invalidate method cache */
  322.  
  323. /* funky return mechanisms */
  324. PERLVAR(Iforkprocess,    int)        /* so do_open |- can return proc# */
  325.  
  326. /* memory management */
  327. PERLVAR(Isv_count,    I32)        /* how many SV* are currently allocated */
  328. PERLVAR(Isv_objcount,    I32)        /* how many objects are currently allocated */
  329. PERLVAR(Isv_root,    SV*)        /* storage for SVs belonging to interp */
  330. PERLVAR(Isv_arenaroot,    SV*)        /* list of areas for garbage collection */
  331.  
  332. /* subprocess state */
  333. PERLVAR(Ifdpid,        AV *)        /* keep fd-to-pid mappings for my_popen */
  334.  
  335. /* internal state */
  336. PERLVARI(Iop_mask,    char *,    NULL)    /* masked operations for safe evals */
  337.  
  338. /* current interpreter roots */
  339. PERLVAR(Imain_cv,    CV *)
  340. PERLVAR(Imain_root,    OP *)
  341. PERLVAR(Imain_start,    OP *)
  342. PERLVAR(Ieval_root,    OP *)
  343. PERLVAR(Ieval_start,    OP *)
  344.  
  345. /* runtime control stuff */
  346. PERLVARI(Icurcopdb,    COP *,    NULL)
  347.  
  348. PERLVAR(Ifilemode,    int)        /* so nextargv() can preserve mode */
  349. PERLVAR(Ilastfd,    int)        /* what to preserve mode on */
  350. PERLVAR(Ioldname,    char *)        /* what to preserve mode on */
  351. PERLVAR(IArgv,        char **)    /* stuff to free from do_aexec, vfork safe */
  352. PERLVAR(ICmd,        char *)        /* stuff to free from do_aexec, vfork safe */
  353. /* Elements in this array have ';' appended and are injected as a single line
  354.    into the tokeniser. You can't put any (literal) newlines into any program
  355.    you stuff in into this array, as the point where it's injected is expecting
  356.    a single physical line. */
  357. PERLVAR(Ipreambleav,    AV *)
  358. PERLVAR(Imess_sv,    SV *)
  359. PERLVAR(Iors_sv,    SV *)        /* output record separator $\ */
  360. /* statics moved here for shared library purposes */
  361. PERLVARI(Igensym,    I32,    0)    /* next symbol for getsym() to define */
  362. PERLVARI(Icv_has_eval, bool, FALSE) /* PL_compcv includes an entereval or similar */
  363. PERLVAR(Itaint_warn,    bool)      /* taint warns instead of dying */
  364. PERLVARI(Ilaststype,    U16,    OP_STAT)
  365. PERLVARI(Ilaststatval,    int,    -1)
  366.  
  367. /* interpreter atexit processing */
  368. PERLVARI(Iexitlistlen,    I32, 0)        /* length of same */
  369. PERLVARI(Iexitlist,    PerlExitListEntry *, NULL)
  370.                     /* list of exit functions */
  371.  
  372. /*
  373. =for apidoc Amn|HV*|PL_modglobal
  374.  
  375. C<PL_modglobal> is a general purpose, interpreter global HV for use by
  376. extensions that need to keep information on a per-interpreter basis.
  377. In a pinch, it can also be used as a symbol table for extensions
  378. to share data among each other.  It is a good idea to use keys
  379. prefixed by the package name of the extension that owns the data.
  380.  
  381. =cut
  382. */
  383.  
  384. PERLVAR(Imodglobal,    HV *)        /* per-interp module data */
  385.  
  386. /* these used to be in global before 5.004_68 */
  387. PERLVARI(Iprofiledata,    U32 *,    NULL)    /* table of ops, counts */
  388.  
  389. PERLVAR(Icompiling,    COP)        /* compiling/done executing marker */
  390.  
  391. PERLVAR(Icompcv,    CV *)        /* currently compiling subroutine */
  392. PERLVAR(Icomppad,    AV *)        /* storage for lexically scoped temporaries */
  393. PERLVAR(Icomppad_name,    AV *)        /* variable names for "my" variables */
  394. PERLVAR(Icomppad_name_fill,    I32)    /* last "introduced" variable offset */
  395. PERLVAR(Icomppad_name_floor,    I32)    /* start of vars in innermost block */
  396.  
  397. #ifdef HAVE_INTERP_INTERN
  398. PERLVAR(Isys_intern,    struct interp_intern)
  399.                     /* platform internals */
  400. #endif
  401.  
  402. /* more statics moved here */
  403. PERLVAR(IDBcv,        CV *)        /* from perl.c */
  404. PERLVARI(Igeneration,    int,    100)    /* from op.c */
  405.  
  406. PERLVARI(Iin_clean_objs,bool,    FALSE)    /* from sv.c */
  407. PERLVARI(Iin_clean_all,    bool,    FALSE)    /* from sv.c */
  408. PERLVAR(Inomemok,    bool)        /* let malloc context handle nomem */
  409. PERLVARI(Isavebegin,     bool,    FALSE)    /* save BEGINs for compiler    */
  410.  
  411. PERLVAR(Iuid,        Uid_t)        /* current real user id */
  412. PERLVAR(Ieuid,        Uid_t)        /* current effective user id */
  413. PERLVAR(Igid,        Gid_t)        /* current real group id */
  414. PERLVAR(Iegid,        Gid_t)        /* current effective group id */
  415. PERLVARI(Ian,        U32,    0)    /* malloc sequence number */
  416. PERLVARI(Icop_seqmax,    U32,    0)    /* statement sequence number */
  417. PERLVARI(Ievalseq,    U32,    0)    /* eval sequence number */
  418. PERLVAR(Iorigalen,    U32)
  419. PERLVAR(Iorigenviron,    char **)
  420. #ifdef PERL_USES_PL_PIDSTATUS
  421. PERLVAR(Ipidstatus,    HV *)        /* pid-to-status mappings for waitpid */
  422. #endif
  423. PERLVAR(Iosname,    char *)        /* operating system */
  424.  
  425. PERLVAR(Isighandlerp,    Sighandler_t)
  426.  
  427. PERLVARA(Ibody_roots,    PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */
  428.  
  429. PERLVAR(Inice_chunk,    char *)        /* a nice chunk of memory to reuse */
  430. PERLVAR(Inice_chunk_size,    U32)    /* how nice the chunk of memory is */
  431.  
  432. PERLVARI(Imaxo,    int,    MAXO)        /* maximum number of ops */
  433.  
  434. PERLVARI(Irunops,    runops_proc_t,    MEMBER_TO_FPTR(RUNOPS_DEFAULT))
  435.  
  436. /*
  437. =for apidoc Amn|SV|PL_sv_undef
  438. This is the C<undef> SV.  Always refer to this as C<&PL_sv_undef>.
  439.  
  440. =for apidoc Amn|SV|PL_sv_no
  441. This is the C<false> SV.  See C<PL_sv_yes>.  Always refer to this as
  442. C<&PL_sv_no>.
  443.  
  444. =for apidoc Amn|SV|PL_sv_yes
  445. This is the C<true> SV.  See C<PL_sv_no>.  Always refer to this as
  446. C<&PL_sv_yes>.
  447.  
  448. =cut
  449. */
  450.  
  451. PERLVAR(Isv_undef,    SV)
  452. PERLVAR(Isv_no,        SV)
  453. PERLVAR(Isv_yes,    SV)
  454.  
  455. PERLVAR(Isubname,    SV *)        /* name of current subroutine */
  456.  
  457. PERLVAR(Isubline,    I32)        /* line this subroutine began on */
  458. PERLVAR(Imin_intro_pending,    I32)    /* start of vars to introduce */
  459.  
  460. PERLVAR(Imax_intro_pending,    I32)    /* end of vars to introduce */
  461. PERLVAR(Ipadix,        I32)        /* max used index in current "register" pad */
  462.  
  463. PERLVAR(Ipadix_floor,    I32)        /* how low may inner block reset padix */
  464. PERLVAR(Ipad_reset_pending,    I32)    /* reset pad on next attempted alloc */
  465.  
  466. PERLVAR(Ihints,        U32)        /* pragma-tic compile-time flags */
  467.  
  468. PERLVAR(Idebug,        VOL U32)    /* flags given to -D switch */
  469.  
  470. PERLVARI(Iamagic_generation,    long,    0)
  471.  
  472. #ifdef USE_LOCALE_COLLATE
  473. PERLVAR(Icollation_name,char *)        /* Name of current collation */
  474. PERLVAR(Icollxfrm_base,    Size_t)        /* Basic overhead in *xfrm() */
  475. PERLVARI(Icollxfrm_mult,Size_t,    2)    /* Expansion factor in *xfrm() */
  476. PERLVARI(Icollation_ix,    U32,    0)    /* Collation generation index */
  477. PERLVARI(Icollation_standard, bool,    TRUE)
  478.                     /* Assume simple collation */
  479. #endif /* USE_LOCALE_COLLATE */
  480.  
  481.  
  482. #if defined (PERL_UTF8_CACHE_ASSERT) || defined (DEBUGGING)
  483. #  define PERL___I -1
  484. #else
  485. #  define PERL___I 1
  486. #endif
  487. PERLVARI(Iutf8cache, I8, PERL___I)    /* Is the utf8 caching code enabled? */
  488. #undef PERL___I
  489.  
  490.  
  491. #ifdef USE_LOCALE_NUMERIC
  492.  
  493. PERLVARI(Inumeric_standard,    bool,    TRUE)
  494.                     /* Assume simple numerics */
  495. PERLVARI(Inumeric_local,    bool,    TRUE)
  496.                     /* Assume local numerics */
  497. PERLVAR(Inumeric_name,    char *)        /* Name of current numeric locale */
  498. #endif /* !USE_LOCALE_NUMERIC */
  499.  
  500. /* utf8 character classes */
  501. PERLVAR(Iutf8_alnum,    SV *)
  502. PERLVAR(Iutf8_alnumc,    SV *)
  503. PERLVAR(Iutf8_ascii,    SV *)
  504. PERLVAR(Iutf8_alpha,    SV *)
  505. PERLVAR(Iutf8_space,    SV *)
  506. PERLVAR(Iutf8_cntrl,    SV *)
  507. PERLVAR(Iutf8_graph,    SV *)
  508. PERLVAR(Iutf8_digit,    SV *)
  509. PERLVAR(Iutf8_upper,    SV *)
  510. PERLVAR(Iutf8_lower,    SV *)
  511. PERLVAR(Iutf8_print,    SV *)
  512. PERLVAR(Iutf8_punct,    SV *)
  513. PERLVAR(Iutf8_xdigit,    SV *)
  514. PERLVAR(Iutf8_mark,    SV *)
  515. PERLVAR(Iutf8_toupper,    SV *)
  516. PERLVAR(Iutf8_totitle,    SV *)
  517. PERLVAR(Iutf8_tolower,    SV *)
  518. PERLVAR(Iutf8_tofold,    SV *)
  519. PERLVAR(Ilast_swash_hv,    HV *)
  520. PERLVAR(Ilast_swash_tmps,    U8 *)
  521. PERLVAR(Ilast_swash_slen,    STRLEN)
  522. PERLVARA(Ilast_swash_key,10,    U8)
  523. PERLVAR(Ilast_swash_klen,    U8)    /* Only needs to store 0-10  */
  524.  
  525. #ifdef FCRYPT
  526. PERLVARI(Icryptseen,    bool,    FALSE)    /* has fast crypt() been initialized? */
  527. #endif
  528.  
  529. PERLVARI(Iglob_index,    int,    0)
  530.  
  531.  
  532. PERLVAR(Iparser,    yy_parser *)    /* current parser state */
  533.  
  534. PERLVAR(Ibitcount,    char *)
  535.  
  536. PERLVAR(Ipsig_ptr, SV**)
  537. PERLVAR(Ipsig_name, SV**)
  538.  
  539. #if defined(PERL_IMPLICIT_SYS)
  540. PERLVAR(IMem,        struct IPerlMem*)
  541. PERLVAR(IMemShared,    struct IPerlMem*)
  542. PERLVAR(IMemParse,    struct IPerlMem*)
  543. PERLVAR(IEnv,        struct IPerlEnv*)
  544. PERLVAR(IStdIO,        struct IPerlStdIO*)
  545. PERLVAR(ILIO,        struct IPerlLIO*)
  546. PERLVAR(IDir,        struct IPerlDir*)
  547. PERLVAR(ISock,        struct IPerlSock*)
  548. PERLVAR(IProc,        struct IPerlProc*)
  549. #endif
  550.  
  551. PERLVAR(Iptr_table,    PTR_TBL_t*)
  552. PERLVARI(Ibeginav_save, AV*, NULL)    /* save BEGIN{}s when compiling */
  553.  
  554. PERLVAR(Ibody_arenas, void*) /* pointer to list of body-arenas */
  555.  
  556.  
  557. #ifdef USE_LOCALE_NUMERIC
  558.  
  559. PERLVAR(Inumeric_radix_sv,    SV *)    /* The radix separator if not '.' */
  560.  
  561. #endif
  562.  
  563. #if defined(USE_ITHREADS)
  564. PERLVAR(Iregex_pad,     SV**)        /* All regex objects */
  565. PERLVAR(Iregex_padav,   AV*)        /* All regex objects */
  566.  
  567. #endif
  568.  
  569. #ifdef USE_REENTRANT_API
  570. PERLVAR(Ireentrant_buffer, REENTR*)    /* here we store the _r buffers */
  571. #endif
  572.  
  573. PERLVAR(Icustom_op_names, HV*)  /* Names of user defined ops */
  574. PERLVAR(Icustom_op_descs, HV*)  /* Descriptions of user defined ops */
  575.  
  576. #ifdef PERLIO_LAYERS
  577. PERLVARI(Iperlio, PerlIO *,NULL)
  578. PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
  579. PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
  580. #endif
  581.  
  582. PERLVARI(Iencoding,    SV*, NULL)        /* character encoding */
  583.  
  584. PERLVAR(Idebug_pad,    struct perl_debug_pad)    /* always needed because of the re extension */
  585.  
  586. PERLVAR(Iutf8_idstart,    SV *)
  587. PERLVAR(Iutf8_idcont,    SV *)
  588.  
  589. PERLVAR(Isort_RealCmp,  SVCOMPARE_t)
  590.  
  591. PERLVARI(Icheckav_save, AV*, NULL)    /* save CHECK{}s when compiling */
  592. PERLVARI(Iunitcheckav_save, AV*, NULL)    /* save UNITCHECK{}s when compiling */
  593.  
  594. PERLVARI(Iclocktick, long, 0)    /* this many times() ticks in a second */
  595.  
  596. PERLVARI(Iin_load_module, int, 0)    /* to prevent recursions in PerlIO_find_layer */
  597.  
  598. PERLVAR(Iunicode, U32)    /* Unicode features: $ENV{PERL_UNICODE} or -C */
  599.  
  600. PERLVAR(Isignals, U32)    /* Using which pre-5.8 signals */
  601.  
  602. PERLVAR(Ireentrant_retint, int)    /* Integer return value from reentrant functions */
  603.  
  604. PERLVAR(Istashcache,    HV *)        /* Cache to speed up S_method_common */
  605.  
  606. /* Hooks to shared SVs and locks. */
  607. PERLVARI(Isharehook,    share_proc_t,    MEMBER_TO_FPTR(Perl_sv_nosharing))
  608. PERLVARI(Ilockhook,    share_proc_t,    MEMBER_TO_FPTR(Perl_sv_nosharing))
  609. #ifdef NO_MATHOMS
  610. #  define PERL_UNLOCK_HOOK Perl_sv_nosharing
  611. #else
  612. /* This reference ensures that the mathoms are linked with perl */
  613. #  define PERL_UNLOCK_HOOK Perl_sv_nounlocking
  614. #endif
  615. PERLVARI(Iunlockhook,    share_proc_t,    MEMBER_TO_FPTR(PERL_UNLOCK_HOOK))
  616.  
  617. PERLVARI(Ithreadhook,    thrhook_proc_t,    MEMBER_TO_FPTR(Perl_nothreadhook))
  618.  
  619. PERLVARI(Ihash_seed, UV, 0)        /* Hash initializer */
  620.  
  621. PERLVARI(Irehash_seed, UV, 0)        /* 582 hash initializer */
  622.  
  623. PERLVARI(Iisarev, HV*, NULL) /* Reverse map of @ISA dependencies */
  624.  
  625. /* The last unconditional member of the interpreter structure when 5.10.0 was
  626.    released. The offset of the end of this is baked into a global variable in 
  627.    any shared perl library which will allow a sanity test in future perl
  628.    releases.  */
  629. #define PERL_LAST_5_10_0_INTERP_MEMBER    Iisarev
  630.  
  631. #ifdef PERL_IMPLICIT_CONTEXT
  632. PERLVARI(Imy_cxt_size, int, 0)        /* size of PL_my_cxt_list */
  633. PERLVARI(Imy_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */
  634. #  ifdef PERL_GLOBAL_STRUCT_PRIVATE
  635. PERLVARI(Imy_cxt_keys, const char **, NULL) /* per-module array of pointers to MY_CXT_KEY constants */
  636. #  endif
  637. #endif
  638.  
  639. #ifdef PERL_TRACK_MEMPOOL
  640. /* For use with the memory debugging code in util.c  */
  641. PERLVAR(Imemory_debug_header, struct perl_memory_debug_header)
  642. #endif
  643.  
  644. #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
  645. /* File descriptor to talk to the child which dumps scalars.  */
  646. PERLVARI(Idumper_fd, int, -1)
  647. #endif
  648.  
  649. /* Stores the PPID */
  650. #ifdef THREADS_HAVE_PIDS
  651. PERLVARI(Ippid,        IV,        0)
  652. #endif
  653.  
  654. #ifdef PERL_MAD
  655. PERLVARI(Imadskills,    bool, FALSE)    /* preserve all syntactic info */
  656.                     /* (MAD = Misc Attribute Decoration) */
  657. PERLVARI(Ixmlfp, PerlIO *,NULL)
  658. #endif
  659.  
  660. #ifdef PL_OP_SLAB_ALLOC
  661. PERLVAR(IOpPtr,I32 **)
  662. PERLVARI(IOpSpace,I32,0)
  663. PERLVAR(IOpSlab,I32 *)
  664. #endif
  665.  
  666. #ifdef PERL_DEBUG_READONLY_OPS
  667. PERLVARI(Islabs, I32**, NULL)    /* Array of slabs that have been allocated */
  668. PERLVARI(Islab_count, U32, 0)    /* Size of the array */
  669. #endif
  670.  
  671. /* Can shared object be destroyed */
  672. PERLVARI(Idestroyhook, destroyable_proc_t, MEMBER_TO_FPTR(Perl_sv_destroyable))
  673.  
  674. /* If you are adding a U8 or U16, check to see if there are 'Space' comments
  675.  * above on where there are gaps which currently will be structure padding.  */
  676.  
  677. /* Within a stable branch, new variables must be added to the very end, before
  678.  * this comment, for binary compatibility (the offsets of the old members must
  679.  *  not change).
  680.  * (Don't forget to add your variable also to perl_clone()!)
  681.  * XSUB.h provides wrapper functions via perlapi.h that make this
  682.  * irrelevant, but not all code may be expected to #include XSUB.h.
  683.  */
  684.